package com.jay.fault.retry;

import com.jay.model.RpcResponse;

import java.util.concurrent.Callable;

/**
 * 重试策略接口定义
 * 该接口用于实现不同的重试策略，以处理在远程过程调用（RPC）中可能发生的失败
 */
public interface RetryStrategy {

    /**
     * 执行重试操作的方法
     * 该方法通过接收一个Callable任务，来尝试执行并获取结果如果执行失败，将根据重试策略进行重试
     *
     * @param callable 一个Callable任务，其结果类型为RpcResponse
     * @return RpcResponse类型的结果，表示远程过程调用的响应
     * @throws Exception 如果执行Callable任务时发生错误，将抛出此异常
     */
    RpcResponse doRetry(Callable<RpcResponse> callable) throws Exception;
}
